
/*
 * Copyright (C) 2008-2009 Archie L. Cobbs. All rights reserved.
 *
 * $Id: package-info.java 374 2010-03-10 20:43:19Z archie.cobbs $
 */

/**
 * Sidekar classes for <a href="http://www.springframework.org/">Spring</a> integration.
 *
 * <p>
 * Sidekar provides the following Spring support:
 * <ul>
 *  <li>The <code>&lt;sidekar:schema&gt;</code> XML tag which scans the classpath for
 *      <code>@{@link org.dellroad.sidekar.annotation.SidekarEntity}</code>-annotated classes</li>
 *  <li>{@link org.dellroad.sidekar.spring.SidekarTransactionManager}, which is Sidekar's implementation of
 *      Spring's {@link org.springframework.transaction.PlatformTransactionManager} interface</li>
 *  <li>The {@link org.dellroad.sidekar.aop.ActionInterceptor} and {@link org.dellroad.sidekar.aop.TransactionInterceptor}
 *      classes, which add Sidekar AOP support for transactions and automatic closing of cursors</li>
 *  <li>{@link org.dellroad.sidekar.spring.SidekarFilter}, a servlet {@link javax.servlet.Filter} that
 *      supports transactions and automatic closing of cursors for servlet requrests</li>
 *  <li>{@link org.dellroad.sidekar.spring.SidekarHandlerInterceptor}, analogous to {@link org.dellroad.sidekar.spring.SidekarFilter}
 *      but working at the Spring MVC layer</li>
 * </ul>
 * </p>
 *
 * <p>
 * For example:
 *  <blockquote><pre>
 *    &lt;beans xmlns="http://www.springframework.org/schema/beans"
 *      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 *      xmlns:context="http://www.springframework.org/schema/context"
 *      xmlns:tx="http://www.springframework.org/schema/tx"
 *      xmlns:p="http://www.springframework.org/schema/p"
 *      xmlns:sidekar="http://sidekar.googlecode.com/schema/sidekar"
 *      xsi:schemaLocation="
 *       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
 *       http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
 *       http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
 *       http://sidekar.googlecode.com/schema/sidekar http://sidekar.googlecode.com/svn/wiki/schemas/sidekar-1.0.xsd"&gt;
 *
 *      &lt;!-- Sidekar environment --&gt;
 *      &lt;bean id="sidekarEnvironment" class="org.dellroad.sidekar.SidekarEnvironment" destroy-method="close"&gt;
 *        &lt;constructor-arg value="/var/db/appdb"/&gt;
 *        &lt;constructor-arg&gt;
 *            &lt;bean class="com.sleepycat.je.EnvironmentConfig" p:allowCreate="true" p:transactional="true"/&gt;
 *        &lt;/constructor-arg&gt;
 *      &lt;/bean&gt;
 *
 *      &lt;!-- Sidekar database --&gt;
 *      &lt;bean id="sidekarDatabase" class="org.dellroad.sidekar.Database" init-method="open" destroy-method="close"&gt;
 *        &lt;constructor-arg ref="sidekarEnvironment"/&gt;
 *        &lt;constructor-arg value="myDbName"/&gt;
 *        &lt;constructor-arg&gt;
 *          &lt;sidekar:schema base-package="com.example.myapp.model"/&gt;   &lt;!-- auto-detect user model classes and schema --&gt;
 *        &lt;/constructor-arg&gt;
 *      &lt;/bean&gt;
 *
 *      &lt;!-- Sidekar transaction manager --&gt;
 *      &lt;bean id="sidekarTransactionManager" class="org.dellroad.sidekar.spring.SidekarTransactionManager"
 *        p:sidekarEnvironment-ref="sidekarEnvironment"/&gt;
 *
 *      &lt;!-- Enable Spring annotation support --&gt;
 *      &lt;context:annotation-config/&gt;
 *
 *      &lt;!-- Enable Spring @Transactional support --&gt;
 *      &lt;tx:annotation-driven transaction-manager="sidekarTransactionManager"/&gt;
 *
 *      &lt;!-- Auto-detect service beans --&gt;
 *      &lt;context:component-scan base-package="com.example.myapp.service"/&gt;
 *
 *      ...
 *
 *    &lt;/beans&gt;
 *  </pre></blockquote>
 * </p>
 *
 * <p>
 * See also {@link org.dellroad.sidekar.aop.ActionInterceptor} and {@link org.dellroad.sidekar.aop.TransactionInterceptor}.
 * </p>
 */
package org.dellroad.sidekar.spring;

